async function async1() {
    console.log('async1 start');
    await async2();
    console.log('async1 end');
}

async function async2() {
    console.log('async2 start');

    // 代码1
    // return new Promise((resolve, reject) => {
    //     resolve();
    //     console.log('async2 promise');
    // })

    // 代码2
    // console.log('async2 promise');
    // return 1

    // 代码3
    await new Promise((resolve, reject) => {
        resolve();
        console.log('async2 promise');
    })
}

console.log('script start');//1

setTimeout(function () {
    console.log('setTimeout');
}, 0);

async1();

new Promise(function (resolve) {
    console.log('promise1');
    resolve();
}).then(function () {
    console.log('promise2');
}).then(function () {
    console.log('promise3');
});

console.log('script end');